/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package Negocio;

import Datos.Conexion;
import Datos.Global;
import Presentacion.frmAgregarRecetaSimple;
import Presentacion.frmReceta;
import java.sql.CallableStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.JTable;
import javax.swing.table.DefaultTableModel;

/**
 *
 * @author Pedro
 */
public class clsRecetaSimple{

   
    public static void Insertar_Receta(String nom, String Prepa, float CosT, float ValPro, 
                                      float Rendi, String modelo, int idTipoReceta,String estado,String unidad) {
        try {
            String sql = "call `insert_RecetaSimple`(?,?,?,?,?,?,?,?,?)";
            CallableStatement proc = Conexion.conn.prepareCall(sql);
            proc.setString(1, nom);
            proc.setString(2, Prepa);
            proc.setFloat(3, CosT);
            proc.setFloat(4, ValPro);
            proc.setFloat(5, Rendi);
            proc.setString(6, modelo);
            proc.setInt(7, idTipoReceta);
            proc.setString(8, estado);
            proc.setString(9, unidad);

            proc.executeUpdate();
        } catch (Exception e) {
            System.out.println("Error Al insertar el tipo de receta " + e);
        }
    }

    public static void modificar_tipoReceta(int idReceta, String nom, String Prepa, float CosT, float ValPro, 
                                            float Rendi, String modelo, int idTipoReceta,String estado,String unidad) {
        try {
            String sql = "call `update_RecetaSimple`(?,?,?,?,?,?,?,?,?,?)";
            CallableStatement proc = Conexion.conn.prepareCall(sql); //insrt , modificar o  eliminar 
            proc.setInt(1, idReceta);
            proc.setString(2, nom);
            proc.setString(3, Prepa);
            proc.setFloat(4, CosT);
            proc.setFloat(5, ValPro);
            proc.setFloat(6, Rendi);
            proc.setString(7, modelo);
            proc.setInt(8, idTipoReceta);
            proc.setString(9, estado);
            proc.setString(10, unidad);
            
            proc.executeUpdate();
        } catch (Exception e) {
            System.out.println("Error al modificar  el tipo de receta " + e);
        }
    }

    /**
     * **************************************************************************
     */
    public static void mostrarTablaRecetasSimples(JTable jt, String sql) {
        Global.limpiarTabla(jt);
        try {
            ResultSet rs = Conexion.executeQuery(Conexion.conn, sql, null);
            DefaultTableModel dtm = (DefaultTableModel) jt.getModel();
            while (rs.next()) {
                Object[] receta = new Object[11];
                receta[0] = rs.getInt(1);
                receta[1] = rs.getString(2);
                receta[2] = rs.getString(3);
                receta[3] = rs.getString(4);
                receta[4] = rs.getFloat(5);
                receta[5] = rs.getFloat(6);
                receta[6] = rs.getFloat(7);
                receta[7] = rs.getString(8);
                receta[8] = rs.getString(9);
                receta[9] = Boolean.FALSE;
                receta[10] = rs.getString(10);
                dtm.addRow(receta);
                
            }

        } catch (SQLException ex) {
            System.out.println("error al cargar tabla Recetas Simples " + ex);
        }
    }

    /**
     * **************************************************************************
     */
    public static int obtener_idRecetaSimple() {
        try {
            String sql = "CALL `obtener_IdRecetaSimple`";
            ResultSet rs = Conexion.executeQuery(Conexion.conn, sql, null);
            while (rs.next()) {
                return rs.getInt(1);
            }
        } catch (SQLException ex) {
            System.out.println("Error al leer el cod de la receta");

        }
        return -1;

    }

    /**
     * **************************************************************************
     */
    public static void eliminar_RecetaSimple(int idReceta_Simple) {
        try {
            String sql = "CALL `deleted_RecetaSimple`(" + idReceta_Simple +")";
            CallableStatement proc = Conexion.conn.prepareCall(sql);
            proc.executeUpdate();
        } catch (SQLException ex) {
            System.out.println("Error al eliminar la receta" + ex);
        }

    }
    
    public static void deshabilitar_receta(int idreceta,String estado){
        try {
            String sql = "CALL `deshabilitar_recetaSimple`(" + idreceta +","+'"'+estado+'"'+")";
            CallableStatement proc = Conexion.conn.prepareCall(sql);
            proc.executeUpdate();
        } catch (SQLException ex) {
            System.out.println("Error al eliminar la receta" + ex);
        }
    }
    
    public static float getCostoTotalReceta(int idReceta ){
        try {
            String sql="CALL `costoTotalRecetaSimple`("+idReceta+")";
            ResultSet rs = Conexion.executeQuery(Conexion.conn, sql, null);
            float total=0;
            while (rs.next()){
                total +=frmAgregarRecetaSimple.costoVerdadero(rs.getFloat(1), rs.getFloat(3), rs.getFloat(4));
            }
            return total;
        } catch (SQLException ex) {
            System.out.println("error a; sumar costo receta "+ex);
        }
        return -1;
    }
    
    public static float getValorProteicoReceta(int idReceta ){
        try {
            String sql="CALL `costoTotalRecetaSimple`("+idReceta+")";
            ResultSet rs = Conexion.executeQuery(Conexion.conn, sql, null);
            float total=0;
            while (rs.next()){
                total +=frmAgregarRecetaSimple.costoVerdadero(rs.getFloat(2), rs.getFloat(3), rs.getFloat(4));
            }
            return total;
        } catch (SQLException ex) {
            System.out.println("error a; sumar costo receta "+ex);
        }
        return -1;
    }

}
